<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>

    <script>

        // 数据类型的隐式转化  ： 程序自己完成的转化

        // 数字的隐式转化
        //    算术运算   + - * / %  隐式转化为数字
        //       注意：+在遇到字符串的时候，会自动转字符串进行拼接
        //    比较运算  隐式转化为数字
        //       注意：两个字符串进行比较的时候，不转数字，而是一位一位的比较ASCII值(短路)

        // 字符串的隐式转化
        //   + 且至少有一个字符串  

        // 逻辑运算! 


        var a = '2' - '1' ;
        console.log(a) ;   // 数字1

        var b = 'hi' - 1 ;
        console.log(b) ;  // NaN

        var c = true + 1 ;
        console.log(c) ;  // 2

        var d = null + 4 ;
        console.log(d) ;  // 4


        var f = true + '1' ;  // 拼接

        var e = 1 + '1' ;
        console.log(e) ;  // 11  拼接


        // true ->1  1==1
        console.log(true == 1) ;   // true


        // 字符串与字符串进行比较的时候，比较的是ASCII值，且是一位一位的进行比较(短路)
        console.log('20' > '111111111111') ;  // true

        console.log('a' < 'b') ;  // true   ASCII值

        console.log('hello' < 'hi') ;





        // 类型不一样  变成一样的   转数字进行比较
        console.log('a' < 2) ;  // false  NaN

        console.log(null < 2) ;  // true  0

        console.log('a' > null) ;


        var a = !2 ;
        console.log(a) ;  // false




        console.log(1 + 2 + !3 + '4') ;
        // 3 + false + '4'
        // 3 + 0 + '4'
        // 3 + '4'
        // '34'

        console.log('1' + 2 + !3) ;
        //           '12' + false  
        //           '12false'

    </script>
    
</body>
</html>